
#ifndef _C_MUTEX_H_
#define _C_MUTEX_H_

#include <cTools/Thread.h>

typedef struct _C_Mutex
{
	pthread_mutex_t	Handle;
} C_Mutex;

typedef C_Mutex* C_Mutex_Ptr;

C_Mutex_Ptr
C_Mutex_New(void);

void
C_Mutex_Free(C_Mutex_Ptr);

C_Bool_t
C_Mutex_Aquire(C_Mutex_Ptr);

void
C_Mutex_Release(C_Mutex_Ptr);

/******************************************************************************/

typedef struct _C_CondVar
{
	pthread_cond_t	Handle;
} C_CondVar;

typedef C_CondVar* C_CondVar_Ptr;

C_CondVar_Ptr
C_CondVar_New(void);

void
C_CondVar_Free(C_CondVar_Ptr);

C_Bool_t
C_CondVar_Wait(C_CondVar_Ptr, C_Mutex_Ptr);

C_Bool_t
C_CondVar_TimedWait(C_CondVar_Ptr, C_Mutex_Ptr,
		const struct timespec*, C_Bool_t *timedout);

C_Bool_t
C_CondVar_Signal(C_CondVar_Ptr);

#endif
